syntax = "proto3";

package demo;

option go_package = "github.com/EvgeniyBudaev/go-demo-grpc/proto";

message User {
  string name = 1;  // имя пользователя
  enum Sex {
    UNSPECIFIED = 0;
    MALE = 1;
    FEMALE = 2;
  }
  Sex sex = 2;      // пол
  string email = 3; // email
}

message AddUserRequest {
  User user = 1;
}

message AddUserResponse {
  string error = 1; // ошибка
}

message ListUsersRequest {
  int32 offset = 1; // смещение выборки
  int32 limit = 2;  // количество элементов
}

message ListUsersResponse {
  int32 count = 1;            // общее количество пользователей
  repeated string emails = 2; // список email
}

message GetUserRequest {
  string email = 1;
}

message GetUserResponse {
  User   user = 1;
  string error = 2;
}

message DelUserRequest {
  string email = 1;
}

message DelUserResponse {
  string error = 1;
}

service Users {
  rpc AddUser(AddUserRequest) returns (AddUserResponse);
  rpc ListUsers(ListUsersRequest) returns (ListUsersResponse);
  rpc GetUser(GetUserRequest) returns (GetUserResponse);
  rpc DelUser(DelUserRequest) returns (DelUserResponse);
}